package com.ruoyi.receivable.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 应收款明细对象 erp_account_receivable
 * 
 * @author ruoyi
 * @date 2025-07-19
 */
public class ErpAccountReceivable extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 单据类型 */
    @Excel(name = "单据类型")
    private Long documentType;

    /** 出库单号，主键 */
    @Excel(name = "出库单号，主键")
    private String outboundNo;

    /** 单据日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "单据日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date documentDate;

    /** 客户名称 */
    @Excel(name = "客户名称")
    private String customerName;

    /** 数量 */
    @Excel(name = "数量")
    private BigDecimal quantity;

    /** 付款方式 */
    @Excel(name = "付款方式")
    private String paymentMethod;

    /** 税额 */
    @Excel(name = "税额")
    private BigDecimal taxAmount;

    /** 应收金额 */
    @Excel(name = "应收金额")
    private BigDecimal receivableAmount;

    /** 已收金额 */
    @Excel(name = "已收金额")
    private BigDecimal receivedAmount;

    /** 付款状态(未收款/部分收款/已结清) */
    @Excel(name = "付款状态(未收款/部分收款/已结清)")
    private String paymentStatus;

    public void setDocumentType(Long documentType) 
    {
        this.documentType = documentType;
    }

    public Long getDocumentType() 
    {
        return documentType;
    }

    public void setOutboundNo(String outboundNo) 
    {
        this.outboundNo = outboundNo;
    }

    public String getOutboundNo() 
    {
        return outboundNo;
    }

    public void setDocumentDate(Date documentDate) 
    {
        this.documentDate = documentDate;
    }

    public Date getDocumentDate() 
    {
        return documentDate;
    }

    public void setCustomerName(String customerName) 
    {
        this.customerName = customerName;
    }

    public String getCustomerName() 
    {
        return customerName;
    }

    public void setQuantity(BigDecimal quantity) 
    {
        this.quantity = quantity;
    }

    public BigDecimal getQuantity() 
    {
        return quantity;
    }

    public void setPaymentMethod(String paymentMethod) 
    {
        this.paymentMethod = paymentMethod;
    }

    public String getPaymentMethod() 
    {
        return paymentMethod;
    }

    public void setTaxAmount(BigDecimal taxAmount) 
    {
        this.taxAmount = taxAmount;
    }

    public BigDecimal getTaxAmount() 
    {
        return taxAmount;
    }

    public void setReceivableAmount(BigDecimal receivableAmount) 
    {
        this.receivableAmount = receivableAmount;
    }

    public BigDecimal getReceivableAmount() 
    {
        return receivableAmount;
    }

    public void setReceivedAmount(BigDecimal receivedAmount) 
    {
        this.receivedAmount = receivedAmount;
    }

    public BigDecimal getReceivedAmount() 
    {
        return receivedAmount;
    }

    public void setPaymentStatus(String paymentStatus) 
    {
        this.paymentStatus = paymentStatus;
    }

    public String getPaymentStatus() 
    {
        return paymentStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("documentType", getDocumentType())
            .append("outboundNo", getOutboundNo())
            .append("documentDate", getDocumentDate())
            .append("customerName", getCustomerName())
            .append("quantity", getQuantity())
            .append("paymentMethod", getPaymentMethod())
            .append("taxAmount", getTaxAmount())
            .append("receivableAmount", getReceivableAmount())
            .append("receivedAmount", getReceivedAmount())
            .append("paymentStatus", getPaymentStatus())
            .toString();
    }
}
